<?php

require_once '../dlo/EpocaDLO.php';

class EpocaController {

    private $cod_epoca;
    private $ano;
    private $dia;
    private $mes;
    private $seculo;
    private $row_id;
    private $campo_id;
    private $campo_valor;
    private $tipo_listagem;

    function __construct(&$cod_epoca, &$ano, &$dia, &$mes, &$seculo, &$row_id, &$campo_id, &$campo_valor, &$tipo_listagem) {
        $this->cod_epoca = &$cod_epoca;
        $this->ano = &$ano;
        $this->dia = &$dia;
        $this->mes = &$mes;
        $this->seculo = &$seculo;
        $this->row_id = &$row_id;
        $this->campo_id = &$campo_id;
        $this->campo_valor = &$campo_valor;
        $this->tipo_listagem = &$tipo_listagem;
    }

    public function cadastrar() {
        try {
            $dlo = &EpocaDLO::getInstance();
            $dlo->cadastrar($this->ano, $this->dia, $this->mes, $this->seculo);
        } catch (Exception $e) {
            echo "Exception: " . $e->getmessage();
        }
    }

    public function alterar() {
        try {
            $dlo = &EpocaDLO::getInstance();
            $dlo->alterar($this->row_id, $this->campo_id, $this->campo_valor);
            echo $this->campo_valor;
        } catch (Exception $e) {
            if ($e->getMessage() != 'no_action') {
                echo "Exception: " . $e->getMessage();
            } else {
                echo $this->campo_valor;
            }
        }
    }

    public function excluir() {
        try {
            $dlo = &EpocaDLO::getInstance();
            $dlo->excluir($this->cod_epoca);
        } catch (Exception $e) {
            echo "Exception: " . $e->getmessage();
        }
    }

    public function listar() {
        try {
            $dlo = &EpocaDLO::getInstance();
            $lista = &$dlo->listar();
            if ($this->tipo_listagem == 'tabela') {
                foreach ($lista as $row) {
                    echo '<tr id="' . $row["cod_epoca"] . '"><td class="cell_editable" id="seculo" title="Clique duas vezes para editar">' . $row["seculo"] . '</td>';
                    echo '<td class="cell_editable" id="ano" title="Clique duas vezes para editar">' . $row["ano"] . '</td>';
                    echo '<td class="cell_editable" id="mes" title="Clique duas vezes para editar">' . $row["mes"] . '</td>';
                    echo '<td class="cell_editable" id="dia" title="Clique duas vezes para editar">' . $row["dia"] . '</td>';
                    echo '<td width="10px" id="' . $row["cod_epoca"] . 'bt_excluir"><div class="ui-state-default ui-corner-all"  style="float: left">';
                    echo '<a href="javascript: void(0)">';
                    echo '<span id="trash" class="ui-icon ui-icon-trash" onclick="showConfirm(\'Confirma exclusão?\',function() {manutencaoEpoca(\'excluir\',' . $row["cod_epoca"] . ');$(this).dialog(\'close\');})" title="Excluir"></span>';
                    echo '</a></div></td></tr>';
                }
            } elseif ($this->tipo_listagem == 'xml') {
                $xml = new XMLWriter();
                $xml->openMemory();
                $xml->startDocument('1.0', 'UTF-8');
                $xml->startElement("lista");
                foreach ($lista as $epoca) {
                    $xml->startElement("epoca");
                    $xml->writeElement('cod_epoca', $epoca['cod_epoca']);
                    $xml->writeElement('ano', $epoca['ano']);
                    $xml->writeElement('mes', $epoca['mes']);
                    $xml->writeElement('dia', $epoca['dia']);
                    $xml->endElement();
                }
                $xml->endElement();
                header('Content-type: text/xml');
                print $xml->outputMemory(true);
            }
        } catch (Exception $e) {
            echo "Exception: " . $e->getmessage();
        }
    }
}

$controller = new EpocaController($_POST['cod_epoca'], $_POST['ano'], $_POST['dia'], $_POST['mes'], $_POST['seculo'], $_POST['row_id'], $_POST['campo_id'], $_POST['campo_valor'], $_POST['tipo_listagem']);
if ($_POST['acao'] == 'cadastrar') {
    $controller->cadastrar();
} elseif ($_POST['acao'] == 'alterar') {
    $controller->alterar();
} elseif ($_POST['acao'] == 'excluir') {
    $controller->excluir();
} elseif ($_POST['acao'] == 'listar') {
    $controller->listar();
}
?>